<?php
/**
 * --------------------------------------------------------------
 * 文件类函数库
 * Author: zd <kfzphp@126.com>
 * Date: 2018-06-01
 * Project: kfzphp.com
 * --------------------------------------------------------------
 */

/**
 * 仅调试使用(文件保存)
 * @param  [type]     $content  写入内容
 * @param  integer    $exit     执行完是否停止 1true 0false
 * @param  string     $filename 文件名称
 * @param  integer    $flag     是否叠加 1叠加 0不叠加
 * @param  integer    $position 添加至开头还是末尾 1开头 0末尾
 * @return [type]               [description]
 */
function txt($content, $exit = 0, $prefix = '', $filename = 'debug.txt', $flag = 1, $position = 1)
{
    // 文件路径
    if ($filename) {
        $filepath = LOGS_PATH . '/' . $filename;
    } else {
        $filepath = LOGS_PATH . '/debug_' . date('Ymd', time()) . '.txt';
    }
    // 是否存在
    if (!file_exists($filepath)) {
        $myfile = fopen($filepath, "w") or die('Unable to open file : "' . $filepath);
        $txt = "\r\n init ... \r\n";
        fwrite($myfile, $txt);
        fclose($myfile);
    }
    // 文档格式
    if (is_array($content) || is_object($content)) {
        $filedata = var_export($content, true);
    } else {
        $filedata = $content;
    }
    $prefix = !empty($prefix) ? '[' . $prefix . '] ' : '';
    $filedata = $prefix . '[' . date('Y-m-d H:i:s', time()) . '] ' . $_SERVER['REQUEST_METHOD'] . '|' . ucwords(gettype($content)) . "\r\n" . $filedata;
    // 是否叠加
    if ($flag) {
        // 添加至开头还是末尾
        if ($position) {
            // 添加至开头
            $filetowt = fopen($filepath, 'r+');
            $string = $filedata . "\r\n-----------------\r\n" . file_get_contents($filepath);
            fwrite($filetowt, $string);
            fclose($filetowt);
        } else {
            // 添加至末尾
            $filedata = "\r\n-----------------\r\n" . $filedata;
            file_put_contents($filepath, $filedata, FILE_APPEND);
        }
    } else {
        file_put_contents($filepath, $filedata, FILE_USE_INCLUDE_PATH);
    }
    if ($exit) {
        exit;
    } else {
        return true;
    }
}

/**
 * 保存数据文件
 * @param  [type]     $content  [文件内容]
 * @param  string     $filename [文件名]
 */
function data($content, $filename = '')
{
    // 文档格式
    if (is_array($content) || is_object($content)) {
        $content = "<?php \r\n return " . var_export($content, true) . ";";
    }
    $filename = !empty($filename) ? $filename : date('YmdHis') . '.php';
    $filepath = DATA_PATH . '/' . $filename;
    // 是否存在
    if (file_exists($filepath)) {
        unlink($filepath);
    }
    $handle = fopen($filepath, 'w');
    fwrite($handle, $content);
    fclose($handle);
}

/**
 * 存储为PHP文件
 * @param  [type]     $content  [文件内容]
 * @param  string     $filename [文件名]
 */
function save($content, $filename = '')
{
    $filename = !empty($filename) ? $filename : date('YmdHis') . '.php';
    $filepath = DATA_PATH . '/' . $filename;
    // 是否存在
    if (!file_exists($filepath)) {
        $myfile = fopen($filepath, "w") or die('Unable to open file : "' . $filepath);
        fwrite($myfile, "");
        fclose($myfile);
    }
    // 文档格式
    $filedata = "<?php\nreturn " . var_export($content, true) . ";";
    // 是否叠加
    file_put_contents($filepath, $filedata, FILE_USE_INCLUDE_PATH);
}

